/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package controle;

import java.sql.SQLException;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.inject.Named;
import modelo.Consulta;
import persistencia.ConsultaDAO;

/**
 *
 * @author Soares
 */
@Named(value="consultaMB")
@ManagedBean
@RequestScoped
public class ConsultaMB {

   
//O mp3 Ã© um objeto da classe Mp3 e Ã© utilizado para apresentar dados
    //no formulÃ¡rio da pÃ¡gina index.xhtml.
    private Consulta consulta;

    //o mp3DAO Ã© um objeto da classe Mp3DAO e Ã© utilizado pelo indexMB para
    //manipulaÃ§Ã£o dos mÃ©todos de acesso a dados, tais como: salvar(), alterar(),
    //excluir() e pesquisar().
    private ConsultaDAO consultaDAO;
   

    //generoDAO Ã© um objeto da classe GeneroDAO e serÃ¡ usado pelo indexMB na
    //manipulaÃ§Ã£o do mÃ©todo de pesquisa de gÃªneros.
    // private GeneroDAO generoDAO;
    //Aqui vamos definir uma lista de objetos do tipo Mp3, os quais serÃ£o
    //apresentados no componente <h:dataTable> da pÃ¡gina index.xhtml.
    private List<Consulta> nome;

    //Definimos uma lista de objetos do tipo Genero, os quais serÃ£o apresentados
    //no componentes <h:selectOneMenu> da pÃ¡gina index.xhtml.
    //private List<Genero> generos;
    //No construtor da classe indexMB sÃ£o criados os objetos mp3 e mp3DAO.
    //O mp3 Ã© usado pelo mecanismo do JSF para vincular os componentes da
    //pÃ¡gina index.xhml com a classe de controle indexMB. JÃ¡ o mp3DAO fornece
    //o conjunto de mÃ©todos para manipulaÃ§Ã£o dos dados no BD.
    public ConsultaMB() throws SQLException {
        consulta = new Consulta();
        consultaDAO = new ConsultaDAO();
        nome = consultaDAO.getTodosConsulta(ConsultaDAO.ORDEM_POR_ID); //Monta a lista de mÃºsicas.
       
    }

   

    //Este mÃ©todo serÃ¡ utilizado para retornar a lista de todos as mÃºsicas cadastradas.
    public List<Consulta> getNome() {
        return nome;
    }

    //Este mÃ©todo serÃ¡ utilizado para retornar a lista de todos os gÃªneros cadastrados.
    // public List<Genero> getGeneros() {
    //   return generos;
    // }   
    //Todos os atributos de um objeto Mp3 (id, musica, musicobanca, ano e genero),
    //serÃ£o vinculados a componentes da pÃ¡gina index.xhtml. Portanto, devemos
    //fornecer os mÃ©todos get e set para que o mecanismo do JSF possa realizar
    //a tarefa de vinculaÃ§Ã£o. Assim, podemos enviar dados do formulÃ¡rio para
    //o indexMB, bem como, atualizar dados da tela com a modificaÃ§Ã£o dos atributos
    //do objeto mp3 presente no indexMB. Lembre-se que a vinculaÃ§Ã£o Ã© feita no
    //atributo value do componente de tela, ex: <h:inputText value="#{indexMB.id}"/>
    public Consulta getConsulta() {
        return consulta;
    }

    public void setConsulta(Consulta consulta) {
        this.consulta = consulta;
    }

 

    //Quanto o usuÃ¡rio clicar no botÃ£o salvar da pÃ¡gina index.xhtml,
    //o indexMB (controlador) chama o mÃ©todo salvar() da classe mp3DAO
    //na camada de persistÃªncia (manipulaÃ§Ã£o de dados do BD), passando
    //o objeto mp3 para que o mesmo seja inserido na tabela.
    public void marcar() throws SQLException {
        
        if (this.consulta.getId()==0){
            consultaDAO.marcar(consulta);
                }
        
        nome = consultaDAO.getTodosConsulta(ConsultaDAO.ORDEM_POR_ID);
       
    }

    

    //Quanto o usuÃ¡rio clicar no botÃ£o excluir da pÃ¡gina index.xhtml,
    //o indexMB (controlador) chama o mÃ©todo excluir() da classe mp3DAO
    //na camada de persistÃªncia (manipulaÃ§Ã£o de dados do BD), passando
    //o objeto mp3 para que o mesmo seja excluÃ­do da tabela.
    public void excluir(Consulta consulta) throws SQLException {
        consultaDAO.excluir(consulta);
        //Atualiza a lista apÃ³s excluir linha da tabela de mp3.
        nome = consultaDAO.getTodosConsulta(ConsultaDAO.ORDEM_POR_ID);
    }

    
   

    //Quando o usuÃ¡rio clicar no link de ordenaÃ§Ã£o da tabela por mÃºsica,
    //a classe de controle (IndexMB) chama o mÃ©todo getTodosMp3() da classe
    //de persistÃªncia Mp3DAO passando como parÃ¢metro a constante que
    //identifica a forma de ordenaÃ§Ã£o (id, mÃºsica, mÃºsicobanda, gÃªnero ou ano).
      public void ordenaPorId() throws SQLException {
        nome = consultaDAO.getTodosConsulta(ConsultaDAO.ORDEM_POR_ID);
    }
    
    public void ordenaPorNome() throws SQLException {
        nome = consultaDAO.getTodosConsulta(ConsultaDAO.ORDEM_POR_NOME);
    }

  

    
}


    

